import { Meta } from '@storybook/blocks';

import * as AnimatedSwitcherStories from '../stories/AnimatedSwitcher.stories';

<Meta of={AnimatedSwitcherStories} />

# AnimatedSwitcher

A widget that by default does a FadeTransition between a new widget and the widget previously set on the AnimatedSwitcher as a child.

## Example

```dart liveslice=AnimatedSwitcher
int _count = 0;

@override
Widget build(BuildContext context) {
  return Column(
    mainAxisAlignment: MainAxisAlignment.center,
    children: <Widget>[
      AnimatedSwitcher(
        duration: const Duration(milliseconds: 500),
        transitionBuilder: (Widget child, Animation<double> animation) {
          return ScaleTransition(child: child, scale: animation);
        },
        child: Text(
          '$_count',
          // This key causes the AnimatedSwitcher to interpret this as a "new"
          // child each time the count changes, so that it will begin its animation
          // when the count changes.
          key: ValueKey<int>(_count),
          style: Theme.of(context).textTheme.display1,
        ),
      ),
      RaisedButton(
        child: const Text('Increment'),
        onPressed: () {
          setState(() {
            _count += 1;
          });
        },
      ),
    ],
  );
}
```

## Related Links

- https://api.flutter.dev/flutter/widgets/AnimatedSwitcher-class.html
